package com.dandelion.manager.system.service;

import com.dandelion.commons.service.BaseService;
import com.dandelion.commons.web.model.AjaxResponse;
import com.dandelion.manager.system.domain.User;

public interface UserService extends BaseService<User> {
	
	/**
	 * 根据账号查找用户
	 * @param username
	 * @return
	 */
	public User findByUsername(String username) ;
	
	/**
	 * 根据账号和密码获取用户信息
	 * @param username
	 * @param password
	 * @return
	 */
	public User getLoginUser(String username, String password);
	
	/**
	 * 用户登录验证
	 * @param username
	 * @param password
	 * @return
	 */
	public AjaxResponse login(String username, String password, String captcha) ;

	/**
	 * 退出系统
	 */
	public void logout();
	
	/**
	 * 找回密码
	 * @param dto
	 * @return
	 */
	public AjaxResponse iForgotPassword(String username) ;
	
	/**
	 * 检查密码找回连接是否正确
	 * @param sid
	 * @param username
	 * @return
	 */
	public AjaxResponse checkResetLink(String sid, String username) ;
	
	/**
	 * 登录后修改密码
	 * @param dto(id, username, userSalt, oldPassword, newPassword)
	 * @return
	 */
	public AjaxResponse changePassword(User dto) ;
	
	/**
	 * 修改密码
	 * @param dto(id, username, validateCode, password)
	 * @return
	 */
	public AjaxResponse changePasswordByForgot(User dto) ;
	
	/**
	 * 修改用户账户状态
	 * @param ids
	 * @param lockedStatus
	 */
	void setUserAccountStatus(Long[] ids, Integer lockedStatus);
	
	/**
	 * 修改用户编辑状态 
	 * @param ids
	 * @param editableStatus
	 */
	void setUserEditableStatus(Long[] ids, Integer editableStatus);
	
	/**
	 * 添加角色到用户
	 * @param ids
	 * @param roleIds
	 */
	void addRoleToUser(Long[] ids, String roleIds);
}
